package com.wyd.wenyongdaAdmin.xo.admin.user.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wyd.wenyongdaAdmin.commons.model.admin.user.dto.UserAccountDTO;
import com.wyd.wenyongdaAdmin.commons.model.admin.user.entity.UserAccountEntity;
import com.wyd.wenyongdaAdmin.commons.model.admin.user.vo.UserAccountVO;
import com.wyd.wenyongdaAdmin.xo.admin.user.mapper.UserAccountMapper;
import com.wyd.wenyongdaAdmin.xo.admin.user.service.IUserAccountService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class UserAccountServiceImpl extends ServiceImpl<UserAccountMapper, UserAccountEntity> implements IUserAccountService {

    private static final Logger log = LoggerFactory.getLogger(UserAccountServiceImpl.class);

    @Override
    public Integer addUserAccount(UserAccountDTO userAccountDTO) {
        if (ObjectUtil.isNotNull(userAccountDTO)) {
            UserAccountEntity user = new UserAccountEntity();
            BeanUtil.copyProperties(userAccountDTO, user);
            return this.baseMapper.insert(user);
        } else {
            return 0;
        }
    }

    @Override
    public UserAccountVO verifyLoginUserAccount(UserAccountVO userAccountVO) {
        if (ObjectUtil.isNotNull(userAccountVO)) {
            return this.baseMapper.selectUserAccountVO(userAccountVO);
        }
        return null;
    }

    @Override
    public Integer updateUserAccount(UserAccountDTO userAccountDTO) {
        if (ObjectUtil.isNotNull(userAccountDTO)) {
            return this.baseMapper.update(new UserAccountEntity(), userAccountUpdateWrapper(userAccountDTO));
        } else {
            return 0;
        }
    }

    @Override
    public Integer deleteUserAccount(List<Long> ids) {
        if (ObjectUtil.isNotNull(ids) && ids.size() > 0) {
            return this.baseMapper.deleteBatchIds(ids);
        } else {
            return 0;
        }
    }

    private UpdateWrapper<UserAccountEntity> userAccountUpdateWrapper(UserAccountDTO userAccountDTO) {
        if (ObjectUtil.isNotNull(userAccountDTO)) {
            UpdateWrapper<UserAccountEntity> updateWrapper = new UpdateWrapper<>();
            if (StrUtil.isNotBlank(String.valueOf(userAccountDTO.getId()))) {
                updateWrapper.eq("id", userAccountDTO.getId());
            }
            if (StrUtil.isNotBlank(userAccountDTO.getUsername())) {
                updateWrapper.set("username", userAccountDTO.getUsername());
            }
            if (StrUtil.isNotBlank(userAccountDTO.getPassword())) {
                updateWrapper.set("password", userAccountDTO.getPassword());
            }
            return updateWrapper;
        }
        return null;
    }

}
